home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Emulatoren / UAE0.6.4 / src / include / bebox.h < prev    next >
C/C++ Source or Header  |  2000-05-27  |  4KB  |  197 lines

  1. /* 
  2.  * UAE - The Un*x Amiga Emulator
  3.  *
  4.  * BeBox port specific stuff
  5.  * 
  6.  * (c) 1996 Christian Bauer
  7.  * (c) 1996 Patrick Hanevold
  8.  */
  9.  
  10. extern "C" {
  11. #include "sysconfig.h"
  12. #include "sysdeps.h"
  13. #include "config.h"
  14. #include "options.h"
  15. #include "memory.h"
  16. #include "custom.h"
  17. #include "newcpu.h"
  18. #include "disk.h"
  19. #include "debug.h"
  20. #include "xwin.h"
  21. #include "os.h"
  22. #include "filesys.h"
  23. #include "keybuf.h"
  24. #include "keyboard.h"
  25. #include "gui.h"
  26. extern void usage(void);
  27. extern void parse_cmdline(int,char**);
  28. extern unsigned long frametime,timeframes;
  29. }
  30.  
  31. class UAEWindow;
  32. class BitmapView;
  33. class Emulator;
  34.  
  35.  
  36. /*
  37.  *  The BeOS application object
  38.  */
  39.  
  40. class UAE : public BApplication {
  41. public:
  42.     UAE();
  43.     virtual void ArgvReceived(int argc, char **argv);
  44.     virtual void ReadyToRun(void);
  45.     virtual bool QuitRequested(void);
  46.     virtual void AboutRequested(void);
  47. //    virtual void MessageReceived(BMessage*);
  48.     virtual void RefsReceived(BMessage*);
  49.     virtual void FilePanelClosed(BMessage*);
  50.     void RequestFile(char*,int);
  51. private:
  52.     BBitmap *the_bitmap;
  53.     UAEWindow *main_window;
  54.     Emulator *the_emulator;
  55. };
  56.  
  57.  
  58. /*
  59.  *  The window in which the Amiga graphics are displayed, handles I/O
  60.  */
  61.  
  62. class UAEWindow : public BWindow {
  63. public:
  64.     UAEWindow(BRect frame, BBitmap *bitmap);
  65.     virtual bool QuitRequested(void);
  66.     virtual void WindowActivated(bool active);
  67.     virtual void MessageReceived(BMessage*);
  68. private:
  69.     BitmapView *main_view;
  70. };
  71.  
  72. /*
  73.  *  A simple view class for blitting a bitmap on the screen
  74.  */
  75.  
  76. class BitmapView : public BView {
  77. public:
  78.     BitmapView(BRect frame, BBitmap *bitmap);
  79.     virtual void Draw(BRect update);
  80.     virtual void KeyDown(ulong);
  81.     void Draw(BRect from, BRect to);
  82. private:
  83.     BBitmap *the_bitmap;
  84. };
  85.  
  86. /*
  87.  *    LED
  88.  */
  89.  
  90. struct Color{
  91.     int    R;
  92.     int    G;
  93.     int    B;
  94. };
  95.  
  96. class LEDView : public BView {
  97. public:
  98.     LEDView(BRect,int,int,int,int,int,int);
  99.     virtual void AttachedToWindow(void);
  100.     virtual void Draw(BRect);
  101.     void    SetState(bool);
  102. private:
  103.     void    Refresh(void);
  104.     BRect    bounds;
  105.     Color    ActiveColor;
  106.     Color    IdleColor;
  107.     bool    State;
  108. };
  109.  
  110. /*
  111.  *    Meter
  112.  */
  113.  
  114. class MeterView : public BView {
  115. public:
  116.     MeterView(BRect);
  117.     virtual void AttachedToWindow(void);
  118.     virtual void Draw(BRect);
  119.     virtual void Pulse(void);
  120. private:
  121.     void    Refresh(void);
  122.     BRect    bounds;
  123. };
  124.  
  125. /*
  126.  *  For running the emulation in its own thread
  127.  */
  128.  
  129. class Emulator {
  130. public:
  131.     Emulator() {thread_running = FALSE;}
  132.     void Run(void);
  133.     void Quit(void);
  134.  
  135. private:
  136.     static long thread_invoc(void*); //Emulator *obj);
  137.     void thread_func(void);
  138.  
  139.     thread_id the_thread;
  140.     bool thread_running;
  141. };
  142.  
  143.  
  144. // Keyboard and mouse
  145. int buttonstate[3];
  146. int newmousecounters;
  147. int lastmx, lastmy;
  148.  
  149. key_info old_key_info;
  150. bool inwindow;
  151. bool window_open;
  152.  
  153. struct Event{
  154.     Event    *Next;
  155.     int        Age;
  156.     char    Key;
  157. };
  158.  
  159. Event *CurentEvent,*LastEvent;
  160.  
  161. // Color map and bitmap
  162. xcolnr xcolors[4096];
  163. struct vidbuf_description gfxvidinfo;
  164.  
  165. int vsize, hsize, hpixels;
  166.  
  167. BitmapView *bitmap_view;
  168. UAEWindow *bitmap_window;
  169.  
  170.  
  171. // Array for converting Be keycodes to Amiga keycodes
  172. int keycode2amiga[128] = {
  173.     -1, AK_ESC, AK_F1, AK_F2, AK_F3, AK_F4, AK_F5, AK_F6,
  174.     AK_F7, AK_F8, AK_F9, AK_F10, AK_LALT, AK_mousestuff, AK_RALT, -1,
  175.  
  176.     -1, AK_BACKQUOTE, AK_1, AK_2, AK_3, AK_4, AK_5, AK_6,
  177.     AK_7, AK_8, AK_9, AK_0, AK_MINUS, AK_EQUAL, AK_BS, AK_HELP,
  178.  
  179.     AK_NPLPAREN, AK_RAMI, AK_NPLPAREN, AK_NPDIV, AK_NPMUL, AK_NPSUB, AK_TAB, AK_Q,
  180.     AK_W, AK_E, AK_R, AK_T, AK_Y, AK_U, AK_I, AK_O,
  181.  
  182.     AK_P, AK_LBRACKET, AK_RBRACKET, AK_BACKSLASH, AK_DEL, AK_NPRPAREN, AK_LAMI, AK_NP7,
  183.     AK_NP8, AK_NP9, AK_NPADD, AK_CAPSLOCK, AK_A, AK_S, AK_D, AK_F,
  184.  
  185.     AK_G, AK_H, AK_J, AK_K, AK_L, AK_SEMICOLON, AK_QUOTE, AK_RET,
  186.     AK_NP4, AK_NP5, AK_NP6, AK_LSH, AK_Z, AK_X, AK_C, AK_V,
  187.  
  188.     AK_B, AK_N, AK_M, AK_COMMA, AK_PERIOD, AK_SLASH, AK_RSH, AK_UP,
  189.     AK_NP1, AK_NP2, AK_NP3, AK_ENT, AK_CTRL, AK_LAMI, AK_SPC, AK_RAMI,
  190.  
  191.     AK_RALT, AK_LF, AK_DN, AK_RT, AK_NP0, AK_NPDEL, AK_LALT, AK_RALT,
  192.     AK_LTGT, -1, -1, -1, -1, -1, -1, -1,
  193.  
  194.     -1, -1, -1, -1, -1, -1, -1, -1,
  195.     -1, -1, -1, -1, -1, -1, -1, -1
  196. };
  197.